﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<errno.h>
#include<assert.h>
//int main()
//{
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%s\n", strerror(i));
//	}
//	return 0;
//}
// 
//int main()
//{
//	FILE * pFile;
//	pFile = fopen("unexist.ent", "r");
//	if (pFile == NULL)
//		//perror("Error opening file unexist.ent");
//	perror("");
//	return 0;
//}

//int main()
//{
//	FILE* pFile;
//	pFile = fopen("unexist.ent", "r");
//	if (pFile == NULL)
//		printf("Error opening file unexist.ent: %s\n", strerror(errno));
//	return 0;
//}
// 
//void* memcpy(void* dst, const void* src, size_t count)//void*来接收任意类型的起始地址//拷贝完成后返回目标空间的起始地址
//{
//
//}
//int main()
//{
//	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[10] = { 0 };
//	memcpy(arr2, arr1, 20);
//	//memcpy(arr2,arr1,5*sizeof(int))//写法二
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr2[i]);
//	}
//	return 0;
//}

//void* my_memcpy(void* dst, const void* src, size_t count)//void*来接收任意类型的起始地址//拷贝完成后返回目标空间的起始地址
//{
//	void* ret = dst;
//	assert(dst);
//	assert(src);
//	/*
//	* copy from lower addresses to higher addresses
//	*/
//	while (count--) {
//		*(char*)dst = *(char*)src;
//		dst = (char*)dst + 1;
//		src = (char*)src + 1;
//	}
//	return(ret);
//}
//int main()
//{
//	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[10] = { 0 };
//	my_memcpy(arr2, arr1, 20);
//	//memcpy(arr2,arr1,5*sizeof(int))//写法二
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr2[i]);
//	}
//	return 0;
//}

//int main()
//{
//	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
//	memmove(arr1 + 2, arr1, 20);
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr1[i]);
//	}
//	return 0;
//}

//void* memmove(void* dst, const void* src, size_t count)
//{
//	void* ret = dst;
//	if (dst <= src || (char*)dst >= ((char*)src + count)) {
//		/*
//		* Non-Overlapping Buffers
//		* copy from lower addresses to higher addresses
//		*/
//		while (count--) {
//			*(char*)dst = *(char*)src;
//			dst = (char*)dst + 1;
//			src = (char*)src + 1;
//		}
//	}
//	else {
//		/*
//		* Overlapping Buffers
//		* copy from higher addresses to lower addresses
//		*/
//		dst = (char*)dst + count - 1;
//		src = (char*)src + count - 1;
//		while (count--) {
//			*(char*)dst = *(char*)src;
//			dst = (char*)dst - 1;
//			src = (char*)src - 1;
//		}
//	}
//	return(ret);
//}

//int main()
//{
//	char arr[] = "she is a good girls";
//	memset(arr, 'o', 5);
//	printf("%s\n", arr);
//
//	return 0;
//}

//int main()
//{
//	int i = 0;
//	int arr[] = { 1,2,3,4,5 };
//	memset(arr, i, 3);
//	for (i = 0; i < 3; i++)
//	{
//		printf("%d\n", arr[i]);
//	}
//
//	return 0;
//}

//int main()
//{
//	int arr1[] = { 1,2,3,4,5,6 };
//	int arr2[] = { 1,2,3,4,7,8 };
//	//int a = memcmp(arr1, arr2, 16);
//	int a = memcmp(arr1, arr2, 17);
//	printf("%d\n", a);
//	return 0;
//}
//
//int main()
//{
//	int a = 0x11223344;//11,2个16进制数字就是8个二进制位,即1个字节
//	return 0;
//}

//int check_sys()
//{
//	int i = 1;
//	return (*(char*)&i);
//}
//int main()
//{
//	int ret = check_sys();
//	if (ret == 1)
//	{
//		printf("⼩端\n");
//	}
//	else
//	{
//		printf("⼤端\n");
//	}
//	return 0;
//}

//int main()
//{
//	char a = -1;
//	//10000000 00000000 00000000 00000001
//	//11111111 11111111 11111111 11111110
//	//11111111 11111111 11111111 11111111(-1的补码为全1);
//	//放到只有八个比特位的char中,截断,最后11111111(8个1)=a;
//	//11111111-a,整型提升:补符号位
//	//11111111 11111111 11111111 11111111
//	signed char b = -1;
//	//11111111-b,整型提升:补符号位
//	//11111111 11111111 11111111 11111111
//	unsigned char c = -1;
//	//11111111-c,无符号数整型提升,高位补0
//	//00000000 00000000 00000000 11111111
//	printf("a=%d,b=%d,c=%d", a, b, c);
//	//打印原码//打印需要整型提升
//	//%d:打印有符号整数a=-1,b=-1,c=255(8个1)
//	return 0;
//}
int main()
{
	char a = -128;
	printf("%u\n", a);

	return 0;
}